Recommender systems are currently used by online providers of goods and services to select products and/or services that might be of interest to customers or other users. For example, a customer who has previously bought books and DVDs from an online provider may access a web site of that provider and be presented with information about two or three other products that the customer might be interested in purchasing. The recommender system can direct the customer towards useful other goods and services in this way. This aids both the user or customer as well as the online provider. The customer does not need to spend time searching for other goods and services and may be directed to goods and services that might not otherwise have been found. The online provider gains increased sales as well as improved customer satisfaction and likelihood of repeat business in the future.
Recommender systems may be used in any situation in which it is required to select items for specified users. The users may be human users or automated users. The items may be goods, services, advertisements, people, other users, companies, institutions, or other entities. For example, a social networking site may use a recommender system to recommend users to other users. A web search engine may use a recommender system to recommend products and services to a user. An online provider of movies may use a recommender system to recommend movies to users.
Some previous recommender systems have used a content-based approach whereby descriptions of both the user and the item are used. For example, for a user the descriptions may comprise feature vectors storing user details such as a user's age, sex, native language and the like. For an item, the descriptions may comprise feature vectors storing item details such as price, author, manufacturer and the like.
Other previous recommender systems have used collaborative filtering approaches. In this case, abstract identifications of users and items are used (such as product codes and customer numbers). Ratings are observed for user-item pairs and used to form a matrix of such ratings for every user-item pair. The ratings indicate how useful an item is to a particular user. The ratings may be explicit, for example, where users are asked to provide the ratings. The ratings may be implicit, for example, they may be inferred from user behavior such as purchases or click data. Recommender systems using collaborative filtering approaches may suffer from a “cold start” problem whereby performance is poor early on when the matrix of ratings is under-populated.
There is a desire to improve the relevance of results produced by recommender systems and to achieve this in a manner that reduces resource requirements (such as processor and memory requirements). There is also a need to made recommendations in real-time with respect to queries. That is, if a user makes a search query to find a particular product, service, other user, or item, the recommender system is desired to provide a recommendation in time for that recommendation to be provided together with the search results. There is also a desire to enable a recommendation system to be updated on-the-fly such that user feedback about recommended items is taken into account as soon as possible. Where large numbers of users and items are involved (which is normal for most recommender system applications, especially those using content-based approaches) these problems are particularly acute. For example, a recommender system may be required to be scalable to applications involving hundreds of thousands of users and billions of ratings.
The embodiments described below are not limited to implementations which solve any or all of the problems mentioned above.